#ifndef OPENGLWIDGET_H
#define OPENGLWIDGET_H

//Внутренняя библиотека.
#include "vidwidget.h"


//OpenGL библиотека.
#include <GL/glx.h>
#include <GL/gl.h>
#include <GL/glu.h>


//Объявление внешних классов.
class VidFrame;


class OpenGLWidget : public VidWidget
{
	Q_OBJECT
signals:
	void needRepaint();

public:
	//Конструктор.
	OpenGLWidget(int index, QWidget *parent = NULL);

	//Деструктор.
	virtual ~OpenGLWidget() {}

	//Функция возврата типа видеоокна.
	virtual VidWidget::WINTYPE getType();

protected:
	//Событие изменения размеров виджета.
	virtual void resizeEvent(QResizeEvent *event);

	//Событие перерисовки виджета.
	virtual void paintEvent(QPaintEvent *event);

	//Событие уровня приложения.
	virtual void customEvent(QEvent *event);

private:
	//OpenGL.
	bool doubleBuffered;
	GLXContext glxContext;
	GLenum glFormat;

	VidFrame *vidFrame;

	bool isCapturing;

	//Функция конвертации формата видео из v4l2 в формат OpenGL.
	void convertV4L2FmtToGLFmt(int pixfmt);

};

#endif
